home *** CD-ROM | disk | FTP | other *** search
- #include "stdafx.h"
- #include "itriazon.h"
- #include "itriadoc.h"
- #include "itriavw.h"
- #include "external.h"
- #include "rw1.h"
- #include "rw2.h"
- //#include "cmplx.h"
- #include "math.h"
- #include "Two_Num.h"
- #include "nthorder.h"
-
- ////////////////////////////////////////////////////////////
- // Real World equations start here
- ////////////////////////////////////////////////////////////
-
- void CIterationsView::RealWorld()
- {
- //char cstr[81];
- i = jrw = 0;
- if (nDistortion >= 16 && nDistortion <= 50)
- {
- RealWorld2();
- return;
- }
-
- //if (cx == 0)
-
- switch (nDistortion)
- {
- case 51:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = (z^rn).csin() + (z^rm) + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 52:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = ((z^3) / ((z+.1)^2)) + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 53:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = (z^3).csin() + ((c^3)*2);
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 54:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = ((z^2) + c).csin() + z;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 55:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = ((z*2) + c).csin() + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 56:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = c*(z.csin() + z.ccos());
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 57: // 2rd Order Newton Nova
- if (bCombo)
- z = c;
- else
- z = cmplx(x, y);
-
- if (jul == 1 && !bCombo)
- {
- c = cmplx(cx, cy);
- }
-
- z += 1;
- z2 = cmplx(42,42);
-
- JMAX = NMAX-2;
- while ((z-z2).abs() > dMIN && i++ < JMAX)
- {
- z2 = z;
- z = z - (z*z-1)/(2*z) + c;
-
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 58: // 3rd Order Newton Nova
- //temp_x = z.real();
- //temp_y = z.imag();
-
- //sprintf(cstr,"x=%f, y=%f",x, y);
- //Status_Bar(cstr);
-
- if (bCombo)
- z = c;
- else
- z = cmplx(x, y);
-
- if (jul == 1 && !bCombo)
- {
- c = cmplx(cx, cy);
- }
-
- z += 1;
- z2 = cmplx(42,42);
- JMAX = NMAX-2;
- while ((z-z2).abs() > dMIN && i++ < JMAX)
- {
- z2 = z;
- z = z - (z*z*z-1)/(3*z*z) + c;
-
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 59: // 4th Order Newton Nova
- if (bCombo)
- z = c;
- else
- z = cmplx(x, y);
-
- if (jul == 1 && !bCombo)
- {
- c = cmplx(cx, cy);
- }
-
- z += 1;
- z2 = cmplx(42,42);
- JMAX = NMAX-2;
- while ((z-z2).abs() > dMIN && i++ < JMAX)
- {
- z2 = z;
- z = z - (z*z*z*z-1)/(4*z*z*z) + c;
-
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 60: // 5rd Order Newton Nova
- if (bCombo)
- z = c;
- else
- z = cmplx(x, y);
-
- if (jul == 1 && !bCombo)
- {
- c = cmplx(cx, cy);
- }
-
- z += 1;
- z2 = cmplx(42,42);
- JMAX = NMAX-2;
- while ((z-z2).abs() > dMIN && i++ < JMAX)
- {
- z2 = z;
- z = z - (z*z*z*z*z-1)/(5*z*z*z*z) + c;
-
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 61:
- if (bCombo)
- z = c;
- else
- z = cmplx(x, y);
-
- if (jul == 1 && !bCombo)
- {
- z1 = cmplx(cx, cy);
- }
- else
- {
- z1 = cmplx(0,0);
- }
- z2 = cmplx(42,42);
- JMAX = NMAX-2;
- while ((z-z2).abs() > dMIN && i++ < JMAX)
- {
- z2 = z;
- z = ((cn-1)*(z^cn)+cm)/(cn*(z^(cn-1))) + z1;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 62:
- if (bCombo)
- z = c;
- else
- z = cmplx(x, y);
-
- if (jul == 1 && !bCombo)
- {
- z1 = cmplx(cx, cy);
- }
- else
- {
- z1 = cmplx(0,0);
- }
- z2 = cmplx(42,42);
- JMAX = NMAX-2;
- while ((z-z2).abs() > dMIN && i++ < JMAX)
- {
- z2 = z;
- z = ((2*z)/3 + 1/(3*z*z)).clog() + z1; //
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 63:
- if (bCombo)
- z = c;
- else
- z = cmplx(x, y);
-
- if (jul == 1 && !bCombo)
- {
- z1 = cmplx(cx, cy);
- }
- else
- {
- z1 = cmplx(0,0);
- }
- z2 = cmplx(42,42);
- JMAX = NMAX-2;
- while ((z-z2).abs() > dMIN && i++ < JMAX)
- {
- z2 = z;
- z = z - ((z^5)-1)/(4*(z^4)) + z1;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 64:
- if (bCombo)
- z = c;
- else
- z = cmplx(x, y);
-
- if (jul == 1 && !bCombo)
- {
- z1 = cmplx(cx, cy);
- }
- else
- {
- z1 = cmplx(0,0);
- }
- z2 = cmplx(42,42);
- JMAX = NMAX-2;
- while ((z-z2).abs() > dMIN && i++ < JMAX)
- {
- z2 = z;
- z = (z - ((z^3)-1)/(3*(z^2))) + ((z^2)-1)/(3*(z^3)) + z1;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 65:
- if (bCombo)
- z = c;
- else
- z = cmplx(x, y);
-
- if (jul == 1 && !bCombo)
- {
- z1 = cmplx(cx, cy);
- }
- else
- {
- z1 = cmplx(0,0);
- }
- z2 = cmplx(42,42);
- JMAX = NMAX-2;
- while ((z-z2).abs() > dMIN && i++ < JMAX)
- {
- z2 = z;
- z = z - ((z^3)-1)/(3*(z^2)) + (z-1)/(1-z^3) + z1;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 66:
- if (bCombo)
- z = c;
- else
- z = cmplx(x, y);
-
- if (jul == 1 && !bCombo)
- {
- z1 = cmplx(cx, cy);
- }
- else
- {
- z1 = cmplx(0,0);
- }
- z2 = cmplx(42,42);
- JMAX = NMAX-2;
- while ((z-z2).abs() > dMIN && i++ < JMAX)
- {
- z2 = z;
- z = z - ((z^5)-1)/(4*(z^2)) + z1;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 67:
- if (bCombo)
- z = c;
- else
- z = cmplx(x, y);
-
- if (jul == 1 && !bCombo)
- {
- z1 = cmplx(cx, cy);
- }
- else
- {
- z1 = cmplx(0,0);
- }
- z2 = cmplx(42,42);
- JMAX = NMAX-2;
- while ((z-z2).abs() > dMIN && i++ < JMAX)
- {
- z2 = z;
- z = z - ((z^rn)-1)/(rn*(z^rm)) + z1;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 68:
- if (bCombo)
- z = c;
- else
- z = cmplx(x, y);
-
- if (jul == 1 && !bCombo)
- {
- z1 = cmplx(cx, cy);
- }
- else
- {
- z1 = cmplx(0,0);
- }
- z2 = cmplx(42,42);
- JMAX = NMAX-2;
- while ((z-z2).abs() > dMIN && i++ < JMAX)
- {
- z2 = z;
- //c = c - ((c^3)-1)/(3*(c^2));
- //c = ((2*c)/3 + 1/(3*c*c)).csin(); //
- // c = (c - ((c^3)-c)/(3*(c^2)-1)); //
- z = (z - ((z^4)-z)/(4*(z^3)-1)) + z1; //
- //c = (2*c)/3 + 1/(3*c*c); //
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 69:
- if (bCombo)
- z = c;
- else
- z = cmplx(x, y);
-
- if (jul == 1 && !bCombo)
- {
- z1 = cmplx(cx, cy);
- }
- else
- {
- z1 = cmplx(0,0);
- }
- z2 = cmplx(42,42);
- JMAX = NMAX-2;
- while ((z-z2).abs() > dMIN && i++ < JMAX)
- {
- z2 = z;
- z = (z - ((z^3)-z)/(3*(z^2)-1)) + z1; //
- //c = (2*c)/3 + 1/(3*c*c); //
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 70:
- if (jul == 0)
- {
- z.set_real(cx);
- z.set_imag(cy);
- }
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- //z = .01+z/c;
-
- z2 = z;
- z = z*z.csin() * c + c;
- c = (cn/(z2*100));
-
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 71: // 2nd Order Phoenix
- z2 = cmplx(0,0);
-
- if (jul == 0)
- {
- c *= cmplx(0,1);
- }
- else
- {
- c *= cmplx(0,1);
- z *= cmplx(0,1);
- }
-
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z1 = z;
- z = z*z+c.imag()+c.real()*z2;
- z2 = z1;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 72: // 3rd Order Phoenix
- z2 = cmplx(0,0);
- if (jul == 0)
- {
- c *= cmplx(0,1);
- }
- else
- {
- c *= cmplx(0,1);
- z *= cmplx(0,1);
- }
-
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z1 = z;
- z = z*z*z+c.imag()+c.real()*z2;
- z2 = z1;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 73: // 4th Order Phoenix
- z2 = cmplx(0,0);
- if (jul == 0)
- {
- c *= cmplx(0,1);
- }
- else
- {
- c *= cmplx(0,1);
- z *= cmplx(0,1);
- }
-
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z1 = z;
- z = z*z*z*z+c.imag()+c.real()*z2;
- z2 = z1;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 74: // Quaternion Map [A1 and A3 Constant]
- rmu0 = cx;
- rmu1 = cy;
- rmu2 = qk1;
- rmu3 = qk2;
-
- x = x;
- u = y;
- y = qt1;
- w = qt2;
-
- for (i = 0; i <= JMAX && x*x+y*y+u*u+w*w < dBailout ; i++)
- {
- temp = x+x;
- x = x*x-y*y-u*u-w*w+rmu0;
- y = temp*y+rmu1;
- u = temp*u+rmu2;
- w = temp*w+rmu3;
- if (nFilter) Delta_z(x, u);
- }
- z = cmplx(x, u);
- if (nFilter) Filter_Complete();
-
- break;
-
- case 75: // Quaternion Map [A0 and A1 Constant]
- rmu0 = cx;
- rmu1 = cy;
- rmu2 = qk1;
- rmu3 = qk2;
-
- u = x;
- w = y;
- x = qt1;
- y = qt2;
-
- for (i = 0; i <= JMAX && x*x+y*y+u*u+w*w < dBailout ; i++)
- {
- temp = x+x;
- x = x*x-y*y-u*u-w*w+rmu0;
- y = temp*y+rmu1;
- u = temp*u+rmu2;
- w = temp*w+rmu3;
- if (nFilter) Delta_z(u, w);
- }
- z = cmplx(u, w);
- if (nFilter) Filter_Complete();
-
- break;
-
- case 76: // Quaternion Map [A0 and A2 Constant]
- rmu0 = cx;
- rmu1 = cy;
- rmu2 = qk1;
- rmu3 = qk2;
-
- y = x;
- w = y;
- x = qt1;
- u = qt2;
-
- for (i = 0; i <= JMAX && x*x+y*y+u*u+w*w < dBailout ; i++)
- {
- temp = x+x;
- x = x*x-y*y-u*u-w*w+rmu0;
- y = temp*y+rmu1;
- u = temp*u+rmu2;
- w = temp*w+rmu3;
- if (nFilter) Delta_z(y, w);
- }
- z = cmplx(y, w);
- if (nFilter) Filter_Complete();
-
- break;
-
- case 77: // Quaternion Map [A0 and A3 Constant]
- rmu0 = cx;
- rmu1 = cy;
- rmu2 = qk1;
- rmu3 = qk2;
-
- y = y;
- u = x;
- x = qt1;
- w = qt2;
-
- for (i = 0; i <= JMAX && x*x+y*y+u*u+w*w < dBailout ; i++)
- {
- temp = x+x;
- x = x*x-y*y-u*u-w*w+rmu0;
- y = temp*y+rmu1;
- u = temp*u+rmu2;
- w = temp*w+rmu3;
- if (nFilter) Delta_z(u, y);
- }
- z = cmplx(u, y);
- if (nFilter) Filter_Complete();
-
- break;
-
- case 78: // Quaternion Map [A1 and A2 Constant]
- rmu0 = cx;
- rmu1 = cy;
- rmu2 = qk1;
- rmu3 = qk2;
-
- x = x;
- w = y;
- y = qt1;
- u = qt2;
-
- for (i = 0; i <= JMAX && x*x+y*y+u*u+w*w < dBailout ; i++)
- {
- temp = x+x;
- x = x*x-y*y-u*u-w*w+rmu0;
- y = temp*y+rmu1;
- u = temp*u+rmu2;
- w = temp*w+rmu3;
- if (nFilter) Delta_z(x, w);
- }
- z = cmplx(x, w);
- if (nFilter) Filter_Complete();
-
- break;
-
- case 79: // Quaternion Map [A2 and A3 Constant]
- rmu0 = cx;
- rmu1 = cy;
- rmu2 = qk1;
- rmu3 = qk2;
-
- x = x;
- y = y;
- u = qt1;
- w = qt2;
-
- for (i = 0; i <= JMAX && x*x+y*y+u*u+w*w < dBailout ; i++)
- {
- temp = x+x;
- x = x*x-y*y-u*u-w*w+rmu0;
- y = temp*y+rmu1;
- u = temp*u+rmu2;
- w = temp*w+rmu3;
- if (nFilter) Delta_z(x, y);
- }
- z = cmplx(x, y);
- if (nFilter) Filter_Complete();
-
- break;
-
- case 80:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = z + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 81: // Squares
-
- x_size = (rn*2) / (double) NMAX;
- y_size = (rn*2) / (double) NMAX;
- z = c;
- i = (int) (fabs(z.real() / x_size) + fabs(z.imag() / y_size));
- if (nFilter) Delta_z(z.real(), z.imaginary());
- if (nFilter) Filter_Complete();
-
- break;
-
- case 82: // Circles
-
- x_size = (rn*2) / (double) NMAX;
- y_size = (rn*2) / (double) NMAX;
- c.set_real(fabs(c.real() / x_size));
- c.set_imag(fabs(c.imag() / y_size));
- z = c;
- i = (int) sqrt(z.real()*z.real()+z.imag()*z.imag());
-
- if (nFilter) Delta_z(z.real(), z.imaginary());
- if (nFilter) Filter_Complete();
-
- break;
-
- case 83: // Radial
-
- deg = x_y_to_degrees(c.real(), c.imag());
- temp = ((double) NMAX)/(90*rn);
- i = (int) (temp * deg);
- z = c;
-
- if (nFilter) Delta_z(z.real(), z.imaginary());
- if (nFilter) Filter_Complete();
- break;
-
- case 84: // Spiral
-
- deg = x_y_to_degrees(c.real(), c.imag());
- temp = ((double) NMAX)/(180*rn);
-
- x_size = rn / (double) NMAX;
- y_size = rn / (double) NMAX;
- c.set_real(fabs(c.real() / x_size));
- c.set_imag(fabs(c.imag() / y_size));
- z = c;
-
- i = (int) (temp*deg + sqrt(z.real()*z.real()+z.imag()*z.imag()));
-
- if (nFilter) Delta_z(z.real(), z.imaginary());
- if (nFilter) Filter_Complete();
- //z = cmplx(((temp * deg) + sqrt(z.real()*z.real()+z.imag()*z.imag())),0);
-
- //if (nFilter) Delta_z(z.real(), z.imaginary());
- //if (nFilter) Filter_Complete();
- break;
-
- case 85:
- x_size = (CRMAX-CRMIN) / (double) NMAX;
- z = c;
- i = (int) ((z.real() + CRMIN) / x_size);
- if (nFilter) Delta_z(z.real(), z.imaginary());
- if (nFilter) Filter_Complete();
- break;
-
- case 90:
- if (jul == 0)
- z = c;
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = c*((z^cn) / cn*(z^cn) + z);
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 91:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = z.csin() + (z^cn) + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 92:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = c*z*(2 - (z^cn));
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 93:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = acos(z) + (z^cn) + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 94:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = z.csin() + z.csin() * (z^cn) + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 95:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = z.csin() + z.ccos() * (z^cn) + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 96:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = z.csin() + acos(z) * (z^cn) + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 97:
- //This fractal was created by our team and is calculated by the following function:
- //To begin, z=pixel, and c=pixel-sin(z). Then, each iteration is:
- // c=pixel+c/z-z, z=z*pixel+c/z
- if (jul == 0)
- {
- z.set_real(cx);
- z.set_imag(cy);
- }
- z2=c-c.csin();
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z2=c+z2/z-z;
- z=z*c+z2/c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 98:
- //This is a fractal generated by our team using the following formula:
- //To begin, z=pixel. Then, each iteration is z=z^4 - z - 0.79
- // for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- // {
- // z = (z^cn) - z - c;
- // if (nFilter) Delta_z(z.real(), z.imaginary());
- // }
- // if (nFilter) Filter_Complete();
-
-
- if (jul == 0)
- {
- z.set_real(cx);
- z.set_imag(cy);
- }
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z2 = z;
- z = z*c.csin() - z;
- c = (cn/(z2*10));
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 99:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- //z = (z^(cn-1))^c;
-
- z2 = z;
- z = (z^cn)+c;
- c = z2;
-
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
-
- break;
-
- case 100:
- if (jul == 0)
- {
- z.set_real(cx);
- z.set_imag(cy);
- }
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- //z = c*z*(cn-z);
-
- z2 = z;
- z = z.csin() - c;
- c = (cn/(z2*100));
-
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
-
- break;
-
- default:
- AfxMessageBox("Real World Fractals, shouldn't get here...");
- break;
- }
- }
-
- double CIterationsView::x_y_to_degrees(double x_, double y_)
- {
- double a;
-
- if (x_ >= 0 && y_ >= 0)
- a = atan(y_/x_); // Q0
- else
- if (x_ < 0 && y_ >= 0)
- a = atan(y_/x_)+pi; // Q1
- else
- if (x_ < 0 && y_ < 0)
- a = atan(y_/x_)+pi; // Q3
- else
- a = atan(y_/x_)+2*pi; // Q4
-
- return a*rad;
- }
-
-